package com.cci.kangdao.externalData.service;

import com.cci.kangdao.dao.model.UserT;
import com.cci.kangdao.dto.BaseResponse;
import com.cci.kangdao.externalData.dto.request.ExternalDataUserRequest;
import com.cci.kangdao.externalData.dto.request.LyhFileUserRequest;
import com.cci.kangdao.externalData.dto.request.SynchroLyhUserRequest;
import com.cci.kangdao.externalData.model.SynchroESNInfo;
import org.springframework.scheduling.annotation.Async;

import java.util.List;

/**
 * @author sw
 */
public interface ExternalDataSynchroService {

	/**
	 * 同步用户
	 * @param userRequest
	 */
	BaseResponse synchroUser(ExternalDataUserRequest userRequest, String source);

	/**
	 * 同步esn
	 * @param esnRequestList
	 */
	BaseResponse synchroEsn(Long userId, String externalUserId, List<SynchroESNInfo> esnRequestList, String source);

	/**
	 * 同步老友会用户
	 * @param userRequest
	 */
	@Async
	void synchroLyhUser(SynchroLyhUserRequest userRequest);

	/**
	 * 同步老友会esn
	 * @param userId
	 */
	void synchroLyhEsn(Long userId, String esn, String plateNumber, String operation);

	/**
	 * 同步老友会esnList
	 * @param userId
	 */
	void synchroLyhEsnList(Long userId, String operation);


	Long registerEndUser(UserT userT);

	/**
	 * 文件方式
	 * 注册时接收老友会用户
	 * @param userRequest
	 */
	@Async
	void receiveLyhUser(LyhFileUserRequest userRequest);

	/**
	 * 文件方式
	 * 手动接收老友会车辆
	 * @param userRequest
	 */
	void receiveLyhVehicle(LyhFileUserRequest userRequest);

	/**
	 * 文件方式
	 * 推送老友会用户
	 * @param userRequest
	 */
	@Async
	void pushLyhUser(LyhFileUserRequest userRequest);

	/**
	 * 文件方式
	 * 推送老友会esn
	 * @param userId
	 */
	@Async
	void pushLyhEsn(Long userId, String esn, String plateNumber, String operation);

	/**
	 * 文件方式
	 * 推送老友会esnList
	 * @param userId
	 */
	@Async
	void pushLyhEsnList(Long userId, String operation);

	/**
	 * 删除用户车辆车队信息
	 * @param userId
	 */
	void deleteEsnAndFleet(Long userId);

}
